Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(4428)

Issue 292400043: HTCP protocol implementation

Can't Edit
Can't Publish+Mail
Start Review
Created:
8 years ago by Amir.Arc
Modified:
7 years, 8 months ago
Reviewers:
Tom Henderson, tomh, n.p
CC:
ns-3-review_googlegroups.com
Visibility:
Public.

Description

Hamilton TCP (H-TCP) implementation in |ns3| ------------------------------------------------ This section describes H-TCP implementation in |ns3|. This implementation is contained in the following files: .. sourcecode:: text src/internet/model/tcp-htcp.{cc,h} Model Description ***************** H-TCP has been designed for high BDP (Bandwidth-Delay Product) paths. It is a dual mode protocol. In normal condition, it works like traditional TCP with the same rate of increament and decrement for congestion window. However, in high PBD networks, when it finds no congestion on the path after deltal second, it increases the window size based on alpha function in the following: alpha(delta)=1+10(delta-deltal)+0.5(delta-deltal)^2 (1) where deltal is a threshold in second for switching between the modes and delta is the elapsed time from last congestion. During the congestion, it reduces the window size multiply by beta function provided in the reference paper. Calculated throughput between the last two consequative congestions is considered for beta calculation. References ========== .. [Leith2004] Douglas Leith, Robert Shorten. 2004. H-TCP: TCP for high-speed and long-distance networks. Proceedings of PFLDnet, Vol. 2004 .. [draft-leith] Douglas Leith, Robert Shorten. 2007. H-TCP: TCP congestion control for high bandwidth-delay product paths. Internet-Draft online Validation ========== The H-TCP model is tested using :cpp:class:`HTcpTestSuite` class defined in `src/internet/test/tcp-htcp-test.cc`. The following commands can be used for testing H-TCP: :: $ ./waf configure --enable-examples --enable-tests $ ./waf build $ ./test.py -s tcp-htcp-test Example ======= `tcp-variants-comparison.cc` located in ``examples/tcp`` can be used for htcp simulation.

Patch Set 1 #

Total comments: 30

Patch Set 2 : applied review comments #

Total comments: 9

Patch Set 3 : Second revision #

Total comments: 6

Patch Set 4 : third revision #

Unified diffs Side-by-side diffs Delta from patch set Stats (+33 lines, -9 lines) Patch
M examples/tcp/tcp-variants-comparison.cc View 1 2 3 4 chunks +10 lines, -5 lines 0 comments Download
M src/internet/model/tcp-htcp.cc View 1 2 3 2 chunks +3 lines, -3 lines 0 comments Download
M src/internet/test/tcp-htcp-test.cc View 1 2 3 1 chunk +8 lines, -1 line 0 comments Download
M src/internet/wscript View 1 2 3 2 chunks +12 lines, -0 lines 0 comments Download

Messages

Total messages: 8
n.p
Generally the code needs some formatting improvements. There are methods that can be removed (they ...
7 years, 10 months ago (2016-06-04 18:04:40 UTC) #1
Amir.Arc
Hello Nat I updated the files. Please check them and let me know if any ...
7 years, 10 months ago (2016-06-15 03:35:30 UTC) #2
Tom Henderson
This looks close to being ready. I'll leave it up to Natale whether to merge ...
7 years, 8 months ago (2016-07-28 12:58:45 UTC) #3
amir.arc_gmail.com
Hello Tom, I am trying to upload the second revision of HTCP, but I have ...
7 years, 8 months ago (2016-08-01 12:19:59 UTC) #4
tomh_tomh.org
On 08/01/2016 05:19 AM, Amir Modarresi wrote: > Hello Tom, > > I am trying ...
7 years, 8 months ago (2016-08-01 15:09:08 UTC) #5
Amir.Arc
Hello, Please consider this patch for review. Thank you Amir https://codereview.appspot.com/292400043/diff/20001/src/internet/model/tcp-htcp.cc File src/internet/model/tcp-htcp.cc (right): https://codereview.appspot.com/292400043/diff/20001/src/internet/model/tcp-htcp.cc#newcode71 ...
7 years, 8 months ago (2016-08-02 00:43:57 UTC) #6
Tom Henderson
There are a few more things that should be handled either before or just after ...
7 years, 8 months ago (2016-08-02 05:36:54 UTC) #7
Amir.Arc
7 years, 8 months ago (2016-08-09 23:05:46 UTC) #8
Dear All,

I posted the HTcp code for review. I appreciate it, if you may review the code
and give me your comments and suggestion.

Thank you
Amir

https://codereview.appspot.com/292400043/diff/40001/src/internet/model/tcp-ht...
File src/internet/model/tcp-htcp.cc (right):

https://codereview.appspot.com/292400043/diff/40001/src/internet/model/tcp-ht...
src/internet/model/tcp-htcp.cc:62: m_throughputRatio (0.2),
On 2016/08/02 05:36:54, Tom Henderson wrote:
> what I meant was not to convert them to member variables but to attributes. 
But
> I read through the Internet Draft and it doesn't seem to me that these are
> likely to be changed by users.

These are the best values based on the authors' experiments; however, they can
be changed for other experiments. If you want me to change them, please let me
know; although I haven't got your mean by "attribute". Do you mean using [[..]]
construct or defining a constant variable in the module?

https://codereview.appspot.com/292400043/diff/40001/src/internet/model/tcp-ht...
src/internet/model/tcp-htcp.cc:139: m_alpha = (1 + 10 * diffSec + 0.25 *
(diffSec * diffSec));            //in seconds
On 2016/08/02 05:36:54, Tom Henderson wrote:
> why '0.25' instead of '0.5'?  The Internet-Draft says it is
> 0.5(Delta-Delta_L)^2, but I don't think that it means that 0.5 is also
squared.

Yes, you are right. In the internet draft, it has been written in a confusing
format, but in their papers, it is (1/2)^2.
Ref:
http://www.hamilton.ie/net/htcp2005.pdf

http://www.hamilton.ie/net/htcp3.pdf

https://codereview.appspot.com/292400043/diff/40001/src/internet/test/tcp-htc...
File src/internet/test/tcp-htcp-test.cc (right):

https://codereview.appspot.com/292400043/diff/40001/src/internet/test/tcp-htc...
src/internet/test/tcp-htcp-test.cc:132: 20383,"HTcp increment test on cWnd "),
TestCase::QUICK);
On 2016/08/02 05:36:54, Tom Henderson wrote:
> I think that these expected cWnd values need documenting (20383, 40, 76671). 
> Are they sensitive in any way to changes that are made elsewhere in ns-3, or
can
> we assume that 20383 will always work?

I added more comments to the test module. They are not special values and they
don't affect ns-3 in any ways. I chose them randomly and calculated their
associated cWnd by hand as m_expectedCwnd. If you want me to change the test
totally, please let me know.
Sign in to reply to this message.

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld f62528b