Personal Miscellaneous TCP/IP GRID Quality of ServiceMulti-Cast  
Background high-speed tcp Transfer Tests Web 100TCP Tuning  

DataTAG Alternative AIMD Kernel

Introduction

This patch is for the linux 2.4.20 kernel. It incorporates many experimental TCP stacks that are currently under investigation and should NOT be used unless you know what you’re doing!

The modifications only alter the sender side congestion window update algorithms and will work with any TCP receiver.

Current release is altAIMD-0.3 available for linux-2.4.20 and linux-2.6.4.

This distribution puts together work by various people in the field of Transport Protocols. It is supported by the DataTAG project (http://www.datatag.org). The patch is the cumulation of work by various people and projects:

The altAIMD kernel also includes some extras which may help in performance and or testing:

  • RFC3465: Appropiate Byte Counting (ABC) - enables the sender to acknowledge data in terms of bytes (as function of the MTU) rather than just by the number of ACKs.
  • moderate_cwnd() Toggle: enables or disables the functionality of the moderate_cwnd() proceedure that adjusts the congestion window in the presence of 'dubious' acks.
  • Txqueuelen feedback / moderation: enables TCP to ignore or moderate feedback from when the txqueuelen is too small.
  • Induced Packet Drops: (Recv side only) allows the recv to selectively loose incoming TCP data packets.

 

Installation

Simply patch against the original linux 2.4.20 (http://www.kernel.org) using the following command:

# cd [path to linux 2.4.20 distro]
# patch –p1 < [path to distribution patch]

You must enable certain options prior to install:

# make menuconfig

    code maturity level options  --->
        [*] Prompt for development and/or incomplete code/drivers

To enable Alternative AIMD:

    Networking options  --->
      [*]   IP: Alternative TCP AIMD Availability
      (100)   TCP: Default Max SsThresh Value

To enable Limited Slow Start:

    Networking options  --->
      [*]   IP: Alternative TCP SlowStart Availability [Limited SlowStart]
      (0)     TCP: Default Alternative AIMD Stack (NEW)

To enable ABC select the following options:

    Networking options  --->
      [*]   IP: Appropiate Byte Sizing Availability (ABC - RFC3465)
      (0)     TCP: ABC ON by default

To enable moderate_cwnd() toggling select the following options:

    Networking options  --->
      [*]   IP: TCP Moderate Congestion Window Toggle Availability
      (1)     TCP: Moderate Congestion Window ON by default

To enable web100 features select the following options:

    Networking options  --->
      [*]   Web100 networking enhancements (NEW)
      [*]     Web100: TCP statistics (NEW)
      (0666)     Web100: Default file permissions
      (0)     Web100: Default gid
      [*]     Web100: Net100 extensions (NEW)
      [*]     Web100: netlink event notification service (NEW)
      (7)     Web100: default winscale initial value (NEW)

To enable induced packet dropping when acting as the recv select the following options:

    Networking options  --->
      [*]   IP: TCP Packet Dropping Available Availability
      (0)     IP: TCP Packet Dropping Rate Default Value

Usage

You can dynamically control the AIMD to use at any instant for ALL existing TCP flows by issuing the following command as root:

# /sbin/sysctl -w net.ipv4.tcp_altAIMD=n

where n is
  0	Standard 'Vanilla' TCP
  1	HSTCP
  2	ScalableTCP
  4 H-TCP
  3	GridDT

You can also define the Limited Slow Start Max SsThresh Threshold via the following command as root:

# /sbin/sysctl –w net.ipv4.tcp_ss_max_ssthresh=n

where n is
  <= 0	Turn Limited Slow Start OFF
  > 0	Use n (in packets) as the max SsThresh threshold

Please the relevant links for further information for each protocol.

Example

The following test was performed on the DataTAG network (rtt latency ~120ms, max bw 1Gb/sec) with a single stream sender running the DataTAG Alternative AIMD patch. Due to the cleanness of the network, loss was induced at the receiver every 1 million packets. This is so that we can see the effects of the AIMD.

It is initiated with Standard 'VanillaTCP' from 0-100sec and then switched to HSTCP between 100-200sec. We then move onto ScalableTCP between 200-300sec and finally we use GridDT for the last 100 sec.

NB: The results obtained from this simple test is not a true indication of the performance of each protocol under all circumstances. For more information, please see: VanillaTCP, HSTCP, ScalableTCP and GridDT respectively for more details.

The following graphs show the effects of the limited slow start protocol in action. It's primarly function is to exit slow start as close to the optimal network usage as possible.

[TODO]

 

Download

If you wish to try out altAIMD, please email me at ytl@hep.ucl.ac.uk

  Description and Download
Patch against linux 2.4.20 Clean patch against linxu 2.4.20. [Version 0.1] [Version 0.2]
DataTAG 'dtg4' patch against linux 2.4.20 Clean patch with SCSI and SysKonnect patches for DataTAG machines [Version 0.1] [Version 0.2]

TODO

Forthcoming changes/updates to the code:

  • it may be useful to be able to specify the tcp stack to use using the socket options. However, this would not allow automatically switching between the stacks 'on-the-fly'. comments welcome.
  • add the aimd type in the web100 output.
  • undo toggles
  • specific logging of specific stack features, eg h-tcp

 

Disclaimer

The algorithms presented within this patch are consider EXPERIMENTAL and the code is provided without any warranty. Limited support is available (if you ask me nicely!). The author and the contributors to this distribution take no responsibility for any damage of any computer, network or person(s) as a consequence of using this patch.

Comments and suggestion are strongly encouraged. <ytl@hep.ucl.ac.uk>

 

Tue, 16 March, 2004 10:37 Previous PageNext Page

 
 
    email me!
© 2001-2003, Yee-Ting Li, email: ytl@hep.ucl.ac.uk, Tel: +44 (0) 20 7679 1376, Fax: +44 (0) 20 7679 7145
Room D14, High Energy Particle Physics, Dept. of Physics & Astronomy, UCL, Gower St, London, WC1E 6BT