TCP Westwood+ is a sender-side only modification of the TCP Reno protocol stack that optimizes the performance of TCP congestion control over both wireline and wireless networks. TCPW is based on end-to-end bandwidth estimation to set congestion window and slow start threshold after a congestion episode, that is, after three duplicate acknowledgments or a timeout. The bandwidth is estimated by properly low-pass filtering the rate of returning acknowledgment packets. The rationale of this strategy is simple: in contrast with TCP Reno, which blindly halves the congestion window after three duplicate ACKs, TCP Westwood+ adaptively sets a slow start threshold and a congestion window which takes into account the bandwidth used at the time congestion is experienced. TCP Westwood significantly increases fairness wrt TCP (New) Reno in wired networks and throughput over wireless links.
TCP Westwood+ has been implemented in the Linux kernel and it is included in the official Linux kernel from the release 2.6.3-rc1 and in the 2.4 kernels in the release 2.4.26-pre1.
How to select/deselect TCP Westwood+ congestion control
If you have a 2.6.x kernel with x>3 or a 2.4.x kernel with x>26 TCP Westwood+ support is compiled in the kernel. All you have to do to use TCP Westwood+ congestion control is to activate it through a sysctl call. As root user issue the following command:
Alternatively you can issue the following command:
echo 1 > /proc/sys/net/ipv4/tcp_westwood
If you want to use TCP Westwood+ as your default congestion control algorithm just edit /etc/sysctl.conf and add the line:
To switch off TCP Westwood congestion control just run one of the above commands with 0 instead of 1.
Ns-2 modules of Westwood+ TCP with the New Reno feature (ns2.1b9a version) are now available.
1. Download the files tcp-westwood-nr.cc and tcp-westwood-nr.h (last update 23 June 2003)
2. Edit the file Makefile.in so that it compiles and links the new module (i.e. add tcp-westwood-nr.o anywhere in the OBJ_CC variable, for example near the other TCP related modules like tcp-newreno.o or tcp-vegas.o). You can find the Makefile.in file under the main NS-2 directory
3. Add the contents of this file to ns-default.tcl and recompile ns.
You can also download all the requested files clicking here.
The scripts singlebottleneck.tcl and mhop.tcl generate single bottleneck and multihop topologies.
If you set filter_type_ 3 you use the original Westwood TCP that overestimates the bandwidth in the presence of ACK compression. If you set filter_type_ 4 you use Westwood+ TCP that eliminates this problem.