Description
TCP Veno implementation in |ns3|
------------------------------------------------
This chapter describes TCP Veno implementation in |ns3|. This implementation is contained in the following files:
.. sourcecode:: text
src/internet/model/tcp-veno.{cc,h}
Model Description
*****************
TCP Veno enhances Reno algorithm to handle random packet losses in wireless access networks more effectively
by employing Vegas's method in estimating the backlog at the bottleneck queue to distinguish between congestive and
non-congestive states.
The backlog (the number of packets accumulated at the bottleneck queue) is calculated using Equation (1):
N = Actual * (RTT - BaseRTT) = Diff * BaseRTT (1)
where
Diff = Expected - Actual = cwnd/BaseRTT - cwnd/RTT
Veno makes decision on cwnd modification based on the calculated N and its predefined threshold beta. Following
Veno implementation in the Linux kernel, beta has a default value of 6.
Specifically, Veno refines the additive increase algorithm of Reno so that the connection can stay longer in the stable
state by incrementing cwnd by 1/cwnd for every other new ACK received after the available bandwidth has been fully utilized,
i.e. when N exceeds beta. Otherwise, Veno increases its cwnd by 1/cwnd upon every new ACK receipt as in Reno.
In the multiplicative decrease algorithm, when Veno is in the non-congestive state, i.e. when N is less than beta,
Veno decrements its cwnd by only 1/5 because the loss encountered is more likely a corruption-based loss than a congestion-based.
Only when N is greater than beta, Veno halves its sending rate as in Reno.
References
==========
.. [Fu2003] Cheng Peng Fu and S. C. Liew, "TCP Veno: TCP enhancement for transmission over wireless access networks," in IEEE Journal on Selected Areas in Communications, vol. 21, no. 2, pp. 216-228, Feb 2003. DOI=http://dx.doi.org/10.1109/JSAC.2002.807336
Validation
==========
The TCP Veno model is tested using :cpp:class:`TcpVenoTestSuite` class defined in `src/internet/test/tcp-veno-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-veno-test
Example
=======
TCP Veno can be simulated using the example `tcp-variants-comparison.cc` located in ``examples/tcp``.
Patch Set 1 #
Total comments: 13
MessagesTotal messages: 1
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||