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

Issue 290510043: TCP Vegas implementation in |ns3|

Can't Edit
Can't Publish+Mail
Start Review
Created:
8 years, 7 months ago by trucanh524
Modified:
8 years, 6 months ago
Reviewers:
tomh, n.p
CC:
ns-3-reviews_googlegroups.com
Visibility:
Public.

Description

TCP Vegas implementation in |ns3| ------------------------------------------------ This chapter describes TCP Vegas implementation in |ns3|. This implementation is contained in the following files: .. sourcecode:: text src/internet/model/tcp-vegas.{cc,h} Model Description ***************** TCP Vegas is a pure delay-based congestion control algorithm implementing a proactive scheme that tries to prevent packet drops by maintaining a small backlog at the bottleneck queue. Vegas continuously samples the RTT and computes the actual throughput a connection achieves using Equation (1) and compares it with the expected throughput calculated in Equation (2). The difference between these 2 sending rates in Equation (3) reflects the amount of extra packets being queued at the bottleneck. actual = cwnd / RTT (1) expected = cwnd / BaseRTT (2) diff = expected - actual (3) To avoid congestion, Vegas linearly increases/decreases its congestion window to ensure the diff value fall between the 2 predefined thresholds, alpha and beta. diff and another threshold, gamma, are used to determine when Vegas should change from its slow-start mode to linear increase/decrease mode. Following the implementation of Vegas in Linux, we use 2, 4, and 1 as the default values of alpha, beta, and gamma, respectively. References ========== .. [Brakmo1995] L. S. Brakmo and L. L. Peterson, "TCP Vegas: end to end congestion avoidance on a global Internet," in IEEE Journal on Selected Areas in Communications, vol. 13, no. 8, pp. 1465-1480, Oct 1995. DOI=http://dx.doi.org/10.1109/49.464716 Validation ========== The TCP Vegas model is tested using :cpp:class:`TcpVegasTestSuite` class defined in `src/internet/test/tcp-vegas-test.{cc,h}`. This test suit can be run using the following commands: :: $ ./waf configure --enable-examples --enable-tests $ ./waf build $ ./test.py -s tcp-vegas-test Example ======= TCP Vegas can be simulated using the example `tcp-variants-comparison.cc` located in ``examples/tcp``.

Patch Set 1 #

Total comments: 4
Unified diffs Side-by-side diffs Delta from patch set Stats (+831 lines, -73 lines) Patch
M src/internet/model/tcp-congestion-ops.h View 2 chunks +17 lines, -4 lines 1 comment Download
src/internet/model/tcp-l4-protocol.cc View 5 chunks +8 lines, -6 lines 0 comments Download
M src/internet/model/tcp-socket-base.h View 9 chunks +21 lines, -8 lines 0 comments Download
M src/internet/model/tcp-socket-base.cc View 34 chunks +73 lines, -46 lines 2 comments Download
src/internet/model/tcp-vegas.h View 1 chunk +168 lines, -0 lines 0 comments Download
src/internet/model/tcp-vegas.cc View 1 chunk +294 lines, -0 lines 0 comments Download
M src/internet/test/tcp-general-test.h View 3 chunks +29 lines, -7 lines 0 comments Download
M src/internet/test/tcp-general-test.cc View 2 chunks +3 lines, -2 lines 0 comments Download
A src/internet/test/tcp-vegas-test.h View 1 chunk +11 lines, -0 lines 1 comment Download
src/internet/test/tcp-vegas-test.cc View 1 chunk +204 lines, -0 lines 0 comments Download
M src/internet/wscript View 3 chunks +3 lines, -0 lines 0 comments Download

Messages

Total messages: 1
n.p
8 years, 6 months ago (2016-04-06 12:56:50 UTC) #1
Looks ok, some minor comments (see also previous review)

https://codereview.appspot.com/290510043/diff/1/src/internet/model/tcp-conges...
File src/internet/model/tcp-congestion-ops.h (right):

https://codereview.appspot.com/290510043/diff/1/src/internet/model/tcp-conges...
src/internet/model/tcp-congestion-ops.h:122: }
This is duplicated from Veno (we need to remember it)

https://codereview.appspot.com/290510043/diff/1/src/internet/model/tcp-socket...
File src/internet/model/tcp-socket-base.cc (right):

https://codereview.appspot.com/290510043/diff/1/src/internet/model/tcp-socket...
src/internet/model/tcp-socket-base.cc:1456: 
This is already in the ns-3-dev repo

https://codereview.appspot.com/290510043/diff/1/src/internet/model/tcp-socket...
src/internet/model/tcp-socket-base.cc:1470: m_congestionControl->CongestionState
(m_tcb, TcpSocketState::CA_DISORDER);
Duplicated from Veno

https://codereview.appspot.com/290510043/diff/1/src/internet/test/tcp-vegas-t...
File src/internet/test/tcp-vegas-test.h (right):

https://codereview.appspot.com/290510043/diff/1/src/internet/test/tcp-vegas-t...
src/internet/test/tcp-vegas-test.h:5: class TcpVegasTest
To remove, useless
Sign in to reply to this message.

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