WADlite -- lightweight TCP tuning daemon

WAD-lite is a lightweight version of our TCP tuning daemon (WAD). It is not as flexible or as powerful as the standard WAD, but it requires less network "smarts" to use it. The WADlite does not require the NTAF. It can operate stand-alone or in conjunction with other WADlite daemons. A system manager can provide an optional configuration file to select tuning parameters for particular paths or services. It assumes that the Net100 kernel is configured with autotuning and HS TCP enabled, so even if there is not a WADlite daemon running, network users should see considerable improvement in legacy TCP applications.

Design

The basic idea is to provide several levels of transport control. The kernel is configured with autotuning and HS TCP enabled and adequate network memory buffers. So even if there is no tuning daemon, the user should see significant improvement in wide-area network applications. The next level of support is to initiate a WADlite tuning daemon when the system is booted. The system manager can provide a configuration file that specifies tuning parameters for certain paths or ports. The next level of support, allows the user to request a "probe" between WADlite tuning daemons on the source and target machine. The probe will attempt to determine optimal transport parameters for the path in each direction, and cache those parameters so they will be used in subsequent network activity on that path.

The basic components then are a Net100 linux kernel with startup scripts to set TCP parameters, a WADlite tuning daemon, and a probe-request user application.

Conceptual Diagram ( ) ( LAN/WAN ) (_______________________________) || /\ || || [Tunes Flows][Waits for Requests][Handles A Request][Monitors a ] wadlite (child) (grandchild) [Network test] (daemon) || || (thread) || || ________ ____\/____ ___\/____ _________ |->| {NL} |forks | {UDP2} |forks | {UDP3} |threads | | | | |----->| |------> | {TCP} |------> | | | |{UDP1} |-- | | | {TCP} | |->| {UDP1} | | |_{UD1}_| | |_{UD2}__| |_{UD1}__| | |________| | ^ | ^ | | | | |_______|__________________|__________| | | | | | | | | | |_____________|__________________| Kernel ________ | | | | | | | |_{UD2}_| | ^ | |______| [wad-lite] USER NL = NetLink Socket for detecting new TCP connections via the web100 kernel UD1= Unix Domain Socket for communication between the grandchild and parent processes on the same host for the purpose of updating the Destination cache used to determine which flows to tune UDP1=UDP Multicast Socket for communication between daemon and threads monitoring network tests--notification that a new TCP connection has started up UDP2=UDP Socket waiting for requests over the network from remote daemons UD2 =Unix Domain Socket for communicating between wad-lite(a user interface on the same host) and the server process UDP3=UDP Socket used to send/receive ports to be used in conducting network tests to/from remote daemons TCP =TCP Sockets used as needed for network tests from which data is gathered and used to tune flows to the remote host

Implementation


Net100 home