Subject: [ledbat] Software for FreeBSD TCP R&D

From: Lawrence Stewart <[email-masked]>
Date: Tue, 03 Aug 2010 18:19:49 +1000

Hi all,

(apologies for any duplicates you receive and please trim the CC list
appropriately if you reply to this email)

We're pleased to announce the release of a substantial set of new
and updated BSD licenced software for TCP experimentation and research
using FreeBSD:

 - "CAIA-Hamilton Delay" Congestion Control Algorithm v0.1 (new)
 - "Hamilton Delay" Congestion Control Algorithm v0.2 (update)
 - Vegas Congestion Control Algorithm v0.2 (update)
 - H-TCP Congestion Control Algorithm v0.12 (update)
 - CUBIC Congestion Control Algorithm v0.10 (update)
 - Statistical Information For TCP Research (SIFTR) v1.2.3 (update)
 - Enhanced Round Trip Time (ERTT) Khelp Module v0.2 (update)
 - Khelp Framework for FreeBSD v0.1.1 (update)
 - Modular TCP Congestion Control for FreeBSD v0.10.0 (update)

A more detailed summary of the various tools/patches is included at the
end of this email.

Everything mentioned above along with other papers, patches and software
relevant/useful for protocol analysis, debugging and experimental
research is available from:

http://caia.swin.edu.au/urp/newtcp/tools.html

The software was developed as part of the NewTCP research
project at Swinburne University's Centre for Advanced Internet
Architectures, made possible in part by a grant from the Cisco
University Research Program Fund at Community Foundation Silicon
Valley. Testing and development was further assisted by a grant
from the FreeBSD Foundation.

We welcome any feedback and hope you enjoy playing with the code
and tools.

Cheers,
Lawrence Stewart, David Hayes and Grenville Armitage

http://caia.swin.edu.au

NB: "CAIA-Hamilton Delay" and "Hamilton Delay" are our working names for
algorithms which do not have established names in the literature.

"CAIA-Hamilton Delay" Congestion Control Algorithm v0.1 [1,2]
----------------------------------------------------------------------
A FreeBSD loadable kernel module that implements an experimental delay
based congestion control algorithm proposed by the Hamilton Institute
[3] but with modifications made by CAIA [4]. It builds on Hamilton's
initial proposal by adding tolerance to non-congestion related losses
and still aims to allow delay- and loss-based algorithms
to fairly coexist.

"Hamilton Delay" Congestion Control Algorithm v0.2 [5,6]
----------------------------------------------------------------------
A FreeBSD loadable kernel module that implements an experimental delay
based congestion control algorithm proposed by the Hamilton Institute
[3]. It provides a first step toward the ability of delay based
algorithms to fairly coexist with loss based algorithms.

Vegas Congestion Control Algorithm v0.2 [7,8]
----------------------------------------------------------------------
A FreeBSD loadable kernel module that implements the Vegas delay-based
congestion control algorithm [9].

H-TCP Congestion Control Algorithm v0.12 [10,11]
----------------------------------------------------------------------
A FreeBSD loadable kernel module that implements the H-TCP loss based
TCP congestion control algorithm [12].

CUBIC Congestion Control Algorithm v0.10 [13,14]
----------------------------------------------------------------------
A FreeBSD loadable kernel module that implements the CUBIC loss based
TCP congestion control algorithm [15]. CUBIC is the current default
algorithm used by Linux.

Statistical Information For TCP Research (SIFTR) v1.2.3 [16,17]
----------------------------------------------------------------------
A FreeBSD 6/7/8/9 kernel module that logs a range of statistics on
active TCP connections to a log file. It provides the ability to make
highly granular measurements of TCP connection state, aimed at system
administrators, developers and researchers. NB: SIFTR has been imported
into FreeBSD's "head" svn branch (a.k.a. 9-CURRENT) as revision 209662
and will be backported to 8-STABLE in time for 8.2-RELEASE.

Enhanced Round Trip Time (ERTT) Khelp Module v0.2 [18,19]
----------------------------------------------------------------------
A FreeBSD loadable kernel module that provides enhanced RTT
measurements for use by delay and rate based TCP congestion control
algorithms. Robust estimates of RTT are provided even when the receiver
uses delayed acknowledgements, TCP segmentation offload (TSO) or
Selective Acknowledgements (SACK). This module is required by the delay
based congestion control algorithms.

Khelp Framework for FreeBSD v0.1.1 [20,21]
----------------------------------------------------------------------
A FreeBSD kernel patch that provides support for generic kernel modules
known as "helpers" to hook into arbitrary points within the kernel and
provide service(s) to the running system. This forms the foundation for
the ERTT Khelp module.

Modular TCP Congestion Control for FreeBSD v0.10.0 [22,23]
-------------------------------------------------
This revision of the modular TCP congestion control framework
patch provides a current snapshot of the project's development
branch. Some fairly major changes and refactoring have gone into this
release, along with numerous tweaks, bug fixes and enhancements to
support the new delay based congestion control algorithms we have
been working on. In theory, the framework now also supports sharing of
congestion control algorithms between congestion aware transport
protocols like TCP and SCTP, though this integration work is yet to be done.

[1] http://caia.swin.edu.au/urp/newtcp/tools/cc_chd-0.1.tar.gz

[2] http://caia.swin.edu.au/urp/newtcp/tools/cc_chd-readme-0.1.txt

[3] L. Budzisz, R. Stanojevic, R. Shorten, and F. Baker, "A strategy for
fair coexistence of loss and delay-based congestion control algorithms",
IEEE Commun. Lett., vol. 13, no. 7, pp. 555-557, Jul. 2009.

[4] D. A. Hayes and G. Armitage, "Improved coexistence and loss
tolerance for delay based TCP congestion control", in Proceedings of
35th Annual IEEE Conference on Local Computer Networks (LCN 2010),
Denver, Colorado, USA, 11-14 October 2010.

[5] http://caia.swin.edu.au/urp/newtcp/tools/cc_hd-0.2.tar.gz

[6] http://caia.swin.edu.au/urp/newtcp/tools/cc_hd-readme-0.2.txt

[7] http://caia.swin.edu.au/urp/newtcp/tools/cc_vegas-0.2.tar.gz

[8] http://caia.swin.edu.au/urp/newtcp/tools/cc_vegas-readme-0.2.txt

[9] L. S. Brakmo and L. L. Peterson, "TCP Vegas: end to end
congestion avoidance on a global internet", IEEE J. Sel. Areas
Commun., vol. 13, no. 8, pp. 1465-1480, Oct. 1995.

[10] http://caia.swin.edu.au/urp/newtcp/tools/cc_htcp-0.12.tar.gz

[11] http://caia.swin.edu.au/urp/newtcp/tools/cc_htcp-readme-0.12.txt

[12] D. Leith, R. Shorten, "H-TCP: TCP for high-speed and long-distance
networks", in Second International Workshop on Protocols for Fast
Long-Distance Networks, Argonne, Illinois USA, February 2004.

[13] http://caia.swin.edu.au/urp/newtcp/tools/cc_cubic-0.10.tar.gz

[14] http://caia.swin.edu.au/urp/newtcp/tools/cc_cubic-readme-0.10.txt

[15] I. Rhee, L. Xu, S. Ha, "CUBIC for Fast Long-Distance Networks",
Internet Draft, draft-rhee-tcpm-cubic-02.txt, August 2008.

[16] http://caia.swin.edu.au/urp/newtcp/tools/siftr-1.2.3.tar.gz

[17] http://caia.swin.edu.au/urp/newtcp/tools/siftr-readme-1.2.3.txt

[18] http://caia.swin.edu.au/urp/newtcp/tools/h_ertt-0.2.tar.gz

[19] http://caia.swin.edu.au/urp/newtcp/tools/h_ertt-readme-0.2.txt

[20]
http://caia.swin.edu.au/urp/newtcp/tools/caia_khelp_framework_v0.1.1_9.x.r209905.patch

[21] http://caia.swin.edu.au/urp/newtcp/tools/khelp-readme-0.1.1.txt

[22]
http://caia.swin.edu.au/urp/newtcp/tools/caia_modularcc_v0.10.0_9.x.r209905.patch

[23] http://caia.swin.edu.au/urp/newtcp/tools/modularcc-readme-0.10.0.txt