The following software codes and tools are developed as part of our research at MCL. They are being released as open source software on an as-is basis without warranties of any kind. We
will have glad to receive any suggestions, comments, or bug reports on these codes and tools. You can reach us here by email.
1. TCP-LP-MOD - A New Linux Pluggable Congestion Module for TCP-LP
TCP-LP stands for TCP Low Priority, which is a new distributed congestion control algorithm developed by Kuzmanovic and Knightly for utilizing the unused bandwidth of a network path as compared to utilizing a fair-share of bandwidth in ordinary TCP. For details of the research project and the related papers please refer to the official TCP-LP homepage.
The original TCP-LP implementation is available for the NS2 simulator and as modifications to the Linux-2.4.19 kernel. However, beginning with Linux 2.6.x a new mechanism called pluggable
congestion control module is available for researchers to implement new congestion control algorithms for TCP in a more systematic and conherent manner. This new pluggable module mechanism defines an API for
implementor to write their own congestion control algorithm without modifiying the rest of the Linux kernel. It also supports the selection of different pluggable modules at runtime on a per-application basis.
Taking advantage of this new pluggable module mechaism our students Edison Wong and Mike Hung successfully implemented the TCP-LP algorithm into a new TCP-LP pluggable module that is
currently being scheduled for inclusion in a future release of the Linux kernel. In the mean time interested readers can download and install the new TCP-LP pluggable module for use in any 2.6.x Linux kernels. An
official homepage has been setup at SourceForge: TCP-LP-MOD Homepage.
2. User-Mode TCP/IP
Research in network protocols often require real experiments for performance evaluation and validation purposes. However, as network and transport protocols, including IP, UDP, and TCP
are often implemented as part of the operating system kernel, any modifications will require kernel modifications, which is both time-consuming and error-prone.
To tackle this problem we are developing a TCP/IP protocol stack that can run entirely in the user mode, i.e., as an application process, as opposed to in the kernel mode. Being in the
user mode means that all the familiar development tools such as compilers and debuggers can be utilized to cut down on the development time and efforts. Moreover, the operatnig system will be protected from bugs in
the protocols that may otherwise crash the operating system if they are implemented within the kernel.
This project will develop such a user-mode TCP/IP implementation, specifically the TCP Reno version with SACK support, and investigate its performance and limitations when compared to
kernel-mode implementations. Currently we have an operational prototype available but further testing, bug fixing, and performance tuning will still be needed before it can be released for use by the research
community. You are welcome to contact us if there is any interests in this project.
The well-known traceroute tool has been the workhorse for many years for determining the network path a packet travels from a source host to a destination host in the Internet. However,
due to the increasing among of security incidents such as DDoS an increasing number of hosts and routers are now configured to ignore traceroute packets and does rendering portion of the network path unresolvable.
Over the years a number of interesting new approaches have been proposed to address this problem, including the use of different packet types and in some cases, piggyback on existing TCP
connection. This project aims at implementing a new SuperTraceroute tool to incopoerate many of these new methods in a single tool that supports very flexible runtime configurations. We will also investigate and
compare the performance of these different methods by conducting measurement experiments in the Internet.
This is a work-in-progress, with an operational prototype available for the Linux platform. We expect to release a beta version in 6 months' time. You are welcome to contact us if there
is any interests in this project.