The existing system for TCP flow control within the current Linux kernel contains an algorithm for determining the window size of packets sent across a network. The window size is based entirely on information already available to the receiver.
One drawback with the current algorithm is that it is not specifically optimised for low bandwidth links. The window size chosen often becomes too large, causing a packet to be dropped. In response to this, the algorithm then lowers the window size to a sub-optimum level and continues gradually increasing it until it again becomes too large, resulting again in the same response. This cycle results in the low bandwidth link performing beneath its potential. This is particularly a problem because such links are often bottlenecks between networks.
The Client's algorithm for TCP window size takes into account the outgoing queue size on the Router, and in theory causes the window size for the link to stabilise at a level which provides better throughput than the current window size algorithm.
FCM is an implementation of the Client's algorithm which replaces the current algorithm, through the insertion of kernel modules on both the Router and the Receiver computers. SAM has two main functions: firstly, it allows the user to create a network log file containing information relevant to network performance. Secondly, SAM can then use this network log file to perform statistical analysis on it. See Figure 2 for a diagram showing the proposed system.