Centre for Advanced Internet Architectures, Swinburne University of Technology, Melbourne, Australia CRICOS number 00111D 30th July, 2010 ---------------------------------------------- OVERVIEW ---------------------------------------------- The enhanced timing module (h_ertt) is a helper module that provides enhanced Round Trip Time (RTT) measurements for use with 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) are used. In addition once per RTT estimate or the RTT is provided. H_ertt requires either the standalone Khelp Framework v0.1.1 patch or bundled version of the Modular TCP Congestion control v0.10.0 and Khelp Framework v0.1.1 patch to be applied to the kernel before it can be used. If a system that has previously been patched with either the Modular TCP Congestion control or the Helper Framework patch, these should be removed first, and the appropriate patch applied. If you are using h_ertt in order to utilise our delay-based congestion control algorithms, you will want to use the bundled version of the Khelp patch. The standalone patch is available under the Khelp Framework item at: http://caia.swin.edu.au/urp/newtcp/tools/caia_khelp_framework_v0.1.1_9.x.r209905.patch The bundled patch is available under the Modular TCP Congestion Control or Khelp Framework items at: http://caia.swin.edu.au/urp/newtcp/tools/caia_modularcc_v0.10.0_khelp_v0.1.1_bundle_9.x.r209905.patch ---------------------------------------------- LICENCE ---------------------------------------------- The FreeBSD h_ertt module is released under a BSD licence. Refer to licence headers in each source file for further details. ---------------------------------------------- USAGE ---------------------------------------------- This module is used by the experimental delay and rate based congestion control modules (see http://caia.swin.edu.au/urp/newtcp/tools.html). The h_ertt module needs to be loaded before or with these modules. Make sure you have the FreeBSD system sources installed. These can be installed using sysinstall if they are not currently installed. The running system must have either one of the following patches applied: caia_modularcc_v0.10.0_khelp_v0.1.1_bundle_9.x.r209905.patch caia_khelp_framework_v0.1.1_9.x.r209905.patch To build the module, simply run: make To load the compiled module into the running kernel, run the following command as root: kldload ./h_ertt.ko To unload the module from the running kernel, run the following as root: kldunload h_ertt To delete all artifacts created by compiling the module, run: make cleandir ---------------------------------------------- COMPILE TIME CONFIGURATION ---------------------------------------------- There are currently no compile-time configuration options. ---------------------------------------------- RUN TIME CONFIGURATION ---------------------------------------------- There are currently no run-time configuration options. ---------------------------------------------- KNOWN LIMITATIONS ---------------------------------------------- Current known limitations of the ertt helper module software: 1. Received SACKs that do not acknowledge new data may effect the accuracy of the RTT estimate. Revisions to SACK accounting in FreeBSD fix this problem and will be released soon. 2. In a subsequent release, the h_ertt module will provide hooks for additional helpers to be able to build on the RTT estimates for specific delay and rate based congestion control mechanisms. ---------------------------------------------- ACKNOWLEDGEMENTS ---------------------------------------------- This project has been 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. ---------------------------------------------- RELATED READING ---------------------------------------------- This software was developed at Swinburne University's Centre for Advanced Internet Architectures, under the umbrella of the NewTCP research project. More information on the project is available at: http://caia.swin.edu.au/urp/newtcp/ A number of software tools and technical reports related to experimental TCP research in general are available respectively at: http://caia.swin.edu.au/urp/newtcp/tools.html http://caia.swin.edu.au/urp/newtcp/papers.html At the time of writing, the following software tools may be of interest: Modular TCP Congestion Control for FreeBSD Khelp Framework for FreeBSD Vegas congestion control module (cc_vegas) Hamilton probabilistic delay based congestion control module (cc_hd) CAIA-Hamilton probabilistic delay based congestion control module (cc_chd) CUBIC congestion control algorithm (cc_cubic) H-TCP congestion control algorithm (cc_htcp) ---------------------------------------------- REFERENCES ---------------------------------------------- [1] D. Hayes, "Timing enhancements to the FreeBSD kernel to support delay and rate based TCP mechanisms", CAIA Technical Report 100217A, February 2010. ---------------------------------------------- AUTHORS ---------------------------------------------- The Enhanced Timing helper module was developed by David Hayes using the Khelp Framework for FreeBSD developed by Lawrence Stewart.