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.
Click here to have a list of essential pubblications about TCP Westwood+
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.
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.
Instructions for kernels < 2.6.13
As root user issue the following command
sysctl -w net.ipv4.tcp_westwood=1 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.
Instructions for kernels>=2.6.13
Ns-2 modules of Westwood+ TCP with the New Reno feature (ns2.1b9a version) are now available.
You can also download all the requested files clicking here.
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 fixes this issue.