(TCP Westwood+)
Riga 33: Riga 33:
  
 
You can also download all the requested files clicking [http://c3lab.poliba.it/c3lab_/downloads/westwood/ns2_westwood.tar.gz here].
 
You can also download all the requested files clicking [http://c3lab.poliba.it/c3lab_/downloads/westwood/ns2_westwood.tar.gz here].
 +
 +
== Publications ==
 +
 +
Click [[Westwood:Publications | here]] to have a list of essential pubblications about TCP Westwood+
  
 
=== Scripts ===
 
=== Scripts ===

Revisione 12:01, 4 Gen 2006

TCP Westwood+


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.

Software

Linux Implementation

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:

  sysctl net.ipv4.tcp_westwood=1

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:

  net.ipv4.tcp_westwood=1

To switch off TCP Westwood congestion control just run one of the above commands with 0 instead of 1.

NS-2 Implementation

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 ns2.

You can also download all the requested files clicking here.

Publications

Click here to have a list of essential pubblications about TCP Westwood+

Scripts

The scripts singlebottleneck.tcl and mhop.tcl generate single bottleneck and multihop topologies.

Important Note
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.

TCP Westwood+[edit]


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.

Software[edit]

Linux Implementation[edit]

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[edit]

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:

  sysctl net.ipv4.tcp_westwood=1

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:

  net.ipv4.tcp_westwood=1

To switch off TCP Westwood congestion control just run one of the above commands with 0 instead of 1.

NS-2 Implementation[edit]

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 ns2.

You can also download all the requested files clicking here.

Scripts[edit]

The scripts singlebottleneck.tcl and mhop.tcl generate single bottleneck and multihop topologies.

Important Note
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.