DescriptionTCP Westwood and Westwood+ Implementation
Westwood and Westwood+ employ the AIAD (Additive Increase/Adaptive Decrease) congestion control paradigm. When a congestion episode happens, instead of halving the cwnd, these protocols try to estimate the network's bandwidth and use the estimated value to adjust the cwnd. While Westwood performs the bandwidth sampling every ACK reception, Westwood+ samples the bandwidth every RTT.
Both Westwood and Westwood+ are implemented in the same class that is inherited from the base TcpSocketBase class similar to other exisiting TCP variants. The protocol type is made an EnumValue and can be accessed using the global variable m_pType. The two main methods in the implementation are CountAck() and EstimateBW(). The CountAck() method calculates the number of segments acknowledged by a currently received ACK. The EstimateBW() method estimates the bandwidth based on the value returned by CountAck() and the sampling interval. For Westwood, the sampling interval is the time between two consecutive ACK receipts. For Westwood+, the sampling interval is the last estimated RTT. Under no loss, Westwood and Westwood+ behave the same as TCP Reno. In terms of implementation, this means that the NewAck() methods in the Westwood class and the Reno class are the same. The difference is in the DupAck() and the Retransmit() methods in which Westwood and Westwood+ use the estimated bandwidth (m_currentBW) to adjust m_cWnd and m_ssThresh.
The implementation was validated using different scenarios and compared against the original papers [Mascolo 2001, Mascolo 2004]. Details about our testing can be found in our WNS3 2013 paper titled Tcp Westwood Protocol Implementation in ns-3.
Patch Set 1 #
Total comments: 2
Patch Set 2 : TCP Westwood and Westwood+ Implementation #Patch Set 3 : Adding Westwood and Westwood+ to ns3tcp-cwnd-test-suite.cc #Patch Set 4 : Adding example script with flow monitor for Westwood usage #MessagesTotal messages: 4
|